package ar.com.psicosoft.model.psicosoft;

import java.io.Serializable;

import javax.persistence.*;

import java.sql.Timestamp;
import java.util.List;

/**
 * The persistent class for the factura database table.
 * 
 */
@Entity
@Table(name = "factura", schema = "psicosoft")
@NamedQuery(name = "Factura.findAll", query = "SELECT f FROM Factura f")
public class Factura implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(name = "sec_factura", sequenceName = "psicosoft.sec_factura")
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sec_factura")
	@Column(name = "\"idFactura\"", unique = true, nullable = false)
	private Integer idFactura;

	private Timestamp baja;

	@Column(length = 255)
	private String concepto;

	@Column(length = 10)
	private String contrapartida;

	private Integer delegacion;

	@Column(name = "\"detallesPago\"", nullable = false, length = 60)
	private String detallesPago;

	@Column(name = "\"esInmueble\"", length = 2147483647)
	private String esInmueble;

	@Column(nullable = false, length = 2147483647)
	private String estado;

	@Column(length = 2147483647)
	private String facturado;

	@Column(nullable = false)
	private Timestamp fecha;

	@Column(name = "\"fechaCargo\"")
	private Timestamp fechaCargo;

	private Integer formapago;

	@Column(nullable = false, length = 2147483647)
	private String fraccionado;

	@Column(name = "\"idPersona\"", nullable = false)
	private Integer idPersona;

	@Column(name = "\"idTipoFactura\"", nullable = false)
	private Integer idTipoFactura;

	private Integer inmovilizado;

	private Integer inmueble;

	@Column(name = "\"numDocumentoProveedor\"", length = 40)
	private String numDocumentoProveedor;

	@Column(name = "\"numeroRef\"")
	private Integer numeroRef;

	@Column(length = 255)
	private String observaciones;

	@Column(name = "\"porcenDescpp\"")
	private double porcenDescpp;

	@Column(length = 6)
	private String serie;

	@Column(nullable = false, length = 2147483647)
	private String tipo;

	@Column(nullable = false)
	private double total;

	private Timestamp vencimiento;

	// bi-directional many-to-one association to Cliente
	@ManyToOne
	@JoinColumn(name = "\"idPersona\"", nullable = false, insertable = false, updatable = false)
	private Cliente cliente;

	// bi-directional many-to-one association to Persona
	@ManyToOne
	@JoinColumn(name = "\"idPersona\"", nullable = false, insertable = false, updatable = false)
	private Persona persona;

	// bi-directional many-to-one association to TipoFactura
	@ManyToOne
	@JoinColumn(name = "\"idTipoFactura\"", nullable = false, insertable = false, updatable = false)
	private TipoFactura tipoFactura;

	// bi-directional many-to-one association to LineaFactura
	@OneToMany(mappedBy = "factura")
	private List<LineaFactura> lineaFacturas;

	public Factura() {
	}

	public Integer getIdFactura() {
		return this.idFactura;
	}

	public void setIdFactura(Integer idFactura) {
		this.idFactura = idFactura;
	}

	public Timestamp getBaja() {
		return this.baja;
	}

	public void setBaja(Timestamp baja) {
		this.baja = baja;
	}

	public String getConcepto() {
		return this.concepto;
	}

	public void setConcepto(String concepto) {
		this.concepto = concepto;
	}

	public String getContrapartida() {
		return this.contrapartida;
	}

	public void setContrapartida(String contrapartida) {
		this.contrapartida = contrapartida;
	}

	public Integer getDelegacion() {
		return this.delegacion;
	}

	public void setDelegacion(Integer delegacion) {
		this.delegacion = delegacion;
	}

	public String getDetallesPago() {
		return this.detallesPago;
	}

	public void setDetallesPago(String detallesPago) {
		this.detallesPago = detallesPago;
	}

	public String getEsInmueble() {
		return this.esInmueble;
	}

	public void setEsInmueble(String esInmueble) {
		this.esInmueble = esInmueble;
	}

	public String getEstado() {
		return this.estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public String getFacturado() {
		return this.facturado;
	}

	public void setFacturado(String facturado) {
		this.facturado = facturado;
	}

	public Timestamp getFecha() {
		return this.fecha;
	}

	public void setFecha(Timestamp fecha) {
		this.fecha = fecha;
	}

	public Timestamp getFechaCargo() {
		return this.fechaCargo;
	}

	public void setFechaCargo(Timestamp fechaCargo) {
		this.fechaCargo = fechaCargo;
	}

	public Integer getFormapago() {
		return this.formapago;
	}

	public void setFormapago(Integer formapago) {
		this.formapago = formapago;
	}

	public String getFraccionado() {
		return this.fraccionado;
	}

	public void setFraccionado(String fraccionado) {
		this.fraccionado = fraccionado;
	}

	public Integer getIdPersona() {
		return this.idPersona;
	}

	public void setIdPersona(Integer idPersona) {
		this.idPersona = idPersona;
	}

	public Integer getIdTipoFactura() {
		return this.idTipoFactura;
	}

	public void setIdTipoFactura(Integer idTipoFactura) {
		this.idTipoFactura = idTipoFactura;
	}

	public Integer getInmovilizado() {
		return this.inmovilizado;
	}

	public void setInmovilizado(Integer inmovilizado) {
		this.inmovilizado = inmovilizado;
	}

	public Integer getInmueble() {
		return this.inmueble;
	}

	public void setInmueble(Integer inmueble) {
		this.inmueble = inmueble;
	}

	public String getNumDocumentoProveedor() {
		return this.numDocumentoProveedor;
	}

	public void setNumDocumentoProveedor(String numDocumentoProveedor) {
		this.numDocumentoProveedor = numDocumentoProveedor;
	}

	public Integer getNumeroRef() {
		return this.numeroRef;
	}

	public void setNumeroRef(Integer numeroRef) {
		this.numeroRef = numeroRef;
	}

	public String getObservaciones() {
		return this.observaciones;
	}

	public void setObservaciones(String observaciones) {
		this.observaciones = observaciones;
	}

	public double getPorcenDescpp() {
		return this.porcenDescpp;
	}

	public void setPorcenDescpp(double porcenDescpp) {
		this.porcenDescpp = porcenDescpp;
	}

	public String getSerie() {
		return this.serie;
	}

	public void setSerie(String serie) {
		this.serie = serie;
	}

	public String getTipo() {
		return this.tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	public double getTotal() {
		return this.total;
	}

	public void setTotal(double total) {
		this.total = total;
	}

	public Timestamp getVencimiento() {
		return this.vencimiento;
	}

	public void setVencimiento(Timestamp vencimiento) {
		this.vencimiento = vencimiento;
	}

	public Cliente getCliente() {
		return this.cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public Persona getPersona() {
		return this.persona;
	}

	public void setPersona(Persona persona) {
		this.persona = persona;
	}

	public TipoFactura getTipoFactura() {
		return this.tipoFactura;
	}

	public void setTipoFactura(TipoFactura tipoFactura) {
		this.tipoFactura = tipoFactura;
	}

	public List<LineaFactura> getLineaFacturas() {
		return this.lineaFacturas;
	}

	public void setLineaFacturas(List<LineaFactura> lineaFacturas) {
		this.lineaFacturas = lineaFacturas;
	}

	public LineaFactura addLineaFactura(LineaFactura lineaFactura) {
		getLineaFacturas().add(lineaFactura);
		lineaFactura.setFactura(this);

		return lineaFactura;
	}

	public LineaFactura removeLineaFactura(LineaFactura lineaFactura) {
		getLineaFacturas().remove(lineaFactura);
		lineaFactura.setFactura(null);

		return lineaFactura;
	}

}